
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.*;
import java.util.Optional;

/**
 * @author 黎志雄
 * 创建于2019-2-18
 *
 * Jakarta EE 课程
 */
@WebServlet(urlPatterns = {"/hello"})
public class HelloServlet extends HttpServlet {
    private static final String NAME = "sa";
    private static final String PASSWORD = "sa";
    private static final String URL = "jdbc:h2:~/first;MODE=MYSQL;DB_CLOSE_DELAY=-1";
    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws IOException {

        try (Connection conn = DriverManager.getConnection(URL, NAME, PASSWORD)) {
            /*
                注意，Connection预设为自动“认可/提交”（Commit），也就是Statement执行SQL叙述完后，马上对数据库进行操作变更.
                如果想要对Statement要执行的SQL进行除错，可以使用setAutoCommit(false)来将自动认可取消，在执行完SQL之后，再呼叫Connection的commit()方法认可变更，
                使用Connection的getAutoCommit()可以测试是否设定为自动认可。
                不过无论是否有无执行commit()方法，只要SQL没有错，在关闭Statement或Connection前，都会执行认可commit动作，对数据库进行变更。
            */

            //3.通过数据库的连接操作数据库，实现增删改查
            Statement stmt = conn.createStatement();

            // 创建一个表
            // 如果表不存在就建立这个表，那么可以直接用 create table if not exists tablename 这样的指令来建立，不需要先去查询表是否存在。
            // 从模板表创建表：create table if not exists like old_table_name;
            stmt.executeUpdate(
                    "CREATE TABLE IF NOT EXISTS `user` (" +
                            "  `id` int(11) unsigned NOT NULL AUTO_INCREMENT," +
                            "  `course` varchar(100) NOT NULL," +
                            "  `score` int(11) NOT NULL," +
                            "  PRIMARY KEY (`id`)" +
                            ");"
            );
            ResultSet rs = stmt.executeQuery("select * from user");//选择import java.sql.ResultSet;
            // 插入数据记录
            if(rs==null) {
                stmt.executeUpdate(
                        "insert into `user` (`id`,`course`,`score`) values (1, 'qqqq', 90);" +
                                "insert into `user` (`id`,`course`,`score`) values (4, 'qqqq', 90);"
                );
            }
            response.sendRedirect("http://localhost:8080/test/datasource.jsp");
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}